/**
 * 版本更新测试页面
 * 用于测试应用版本更新功能
 */

// 测试版本更新
export async function testVersionUpdate() {
  console.log("====== 开始测试版本更新 ======");
  
  try {
    // 检查运行环境
    if (typeof plus === 'undefined') {
      console.warn("当前非App环境，无法测试版本更新");
      uni.showToast({
        title: "请在App环境中测试",
        icon: "none",
        duration: 2000
      });
      return;
    }

    // 显示加载提示
    uni.showLoading({
      title: "正在测试版本更新...",
      mask: true
    });

    // 构造测试更新信息
    const testUpdateInfo = {
      versionCode: 999, // 测试版本号
      version: "9", // 测试版本
      title: "测试版本更新",
      contents: "这是一个测试版本更新，用于验证更新功能是否正常工作。",
      url: "http://43.143.252.71/apk/isteel_GITANE-release.apk", // 测试APK地址
      pkg_size: 50 * 1024 * 1024, // 假设50MB
      is_mandatory: false,
      type: "app"
    };

    console.log("测试更新信息:", testUpdateInfo);

    // 导入appUpdate模块
    const appUpdate = await import("@/utils/appUpdate.js");
    
    if (!appUpdate.default) {
      throw new Error("无法加载appUpdate模块");
    }

    // 开始下载并安装
    console.log("开始下载测试安装包...");
    
    await appUpdate.default.downloadAndInstall(testUpdateInfo, {
      onProgress: (progress) => {
        console.log(`下载进度: ${progress}%`);
        uni.showLoading({
          title: `下载中 ${progress}%...`,
          mask: true
        });
      },
      autoInstall: true, // 下载完成后自动安装
      silentDownload: false // 非静默模式，显示进度
    });

    console.log("✅ 测试版本更新完成");
    
  } catch (error) {
    console.error("❌ 测试版本更新失败:", error);
    
    // 显示错误信息
    uni.showModal({
      title: "测试失败",
      content: `版本更新测试失败: ${error.message}`,
      showCancel: false,
      confirmText: "我知道了"
    });
    
  } finally {
    uni.hideLoading();
  }
}

// 测试静默下载
export async function testSilentDownload() {
  console.log("====== 开始测试静默下载 ======");
  
  try {
    if (typeof plus === 'undefined') {
      console.warn("当前非App环境，无法测试静默下载");
      uni.showToast({
        title: "请在App环境中测试",
        icon: "none",
        duration: 2000
      });
      return;
    }

    uni.showLoading({
      title: "正在静默下载...",
      mask: true
    });

    const testUpdateInfo = {
      versionCode: 998,
      version: "9.9.8",
      title: "测试静默下载",
      contents: "这是一个静默下载测试",
      url: "http://43.143.252.71/apk/isteel_GITANE-release.apk",
      pkg_size: 50 * 1024 * 1024,
      is_mandatory: false,
      type: "app"
    };

    const appUpdate = await import("@/utils/appUpdate.js");
    
    // 静默下载，不显示进度
    const result = await appUpdate.default.downloadAndInstall(testUpdateInfo, {
      autoInstall: false, // 不自动安装
      silentDownload: true // 静默下载
    });

    console.log("静默下载结果:", result);
    
    if (result && result.filePath) {
      uni.showModal({
        title: "下载完成",
        content: "静默下载完成，是否立即安装？",
        confirmText: "立即安装",
        cancelText: "稍后安装",
        success: async (res) => {
          if (res.confirm) {
            // 用户选择安装
            await installDownloadedApk(result.filePath, testUpdateInfo);
          }
        }
      });
    }

  } catch (error) {
    console.error("静默下载失败:", error);
    uni.showModal({
      title: "下载失败",
      content: `静默下载失败: ${error.message}`,
      showCancel: false
    });
  } finally {
    uni.hideLoading();
  }
}

// 安装已下载的APK
async function installDownloadedApk(filePath, updateInfo) {
  try {
    const appUpdate = await import("@/utils/appUpdate.js");
    
    // 使用已有文件路径进行安装
    await appUpdate.default.downloadAndInstall(updateInfo, {
      onProgress: (progress) => {
        console.log(`安装进度: ${progress}%`);
      },
      autoInstall: true, // 自动安装
      silentDownload: true, // 静默模式
      existingFilePath: filePath // 传入已下载的文件路径，跳过重新下载
    });
    
  } catch (error) {
    console.error("安装失败:", error);
    uni.showModal({
      title: "安装失败",
      content: `安装失败: ${error.message}`,
      showCancel: false
    });
  }
}

// 检查更新（模拟正常更新流程）
export async function testCheckUpdate() {
  console.log("====== 开始检查更新 ======");
  
  try {
    if (typeof plus === 'undefined') {
      uni.showToast({
        title: "请在App环境中测试",
        icon: "none"
      });
      return;
    }

    uni.showLoading({
      title: "正在检查更新...",
      mask: true
    });

    const appUpdate = await import("@/utils/appUpdate.js");
    
    // 调用检查更新方法
    const result = await appUpdate.default.checkAppUpdate({
      silent: false, // 显示提示
      autoInstall: false, // 不自动安装
      silentDownload: false // 非静默下载
    });

    console.log("更新检查结果:", result);
    
    if (!result.hasUpdate) {
      uni.showToast({
        title: "当前已是最新版本",
        icon: "success"
      });
    }
    
  } catch (error) {
    console.error("检查更新失败:", error);
    uni.showModal({
      title: "检查失败",
      content: `检查更新失败: ${error.message}`,
      showCancel: false
    });
  } finally {
    uni.hideLoading();
  }
}

// 默认导出所有测试方法
export default {
  testVersionUpdate,
  testSilentDownload,
  testCheckUpdate
};